<!--
  Jeepay 门店选择 / 应用选择 
  
  @author terrfly
  @site https://www.jeequan.com
  @date 2022/12/06 12:55
-->
<template>
	
	<!-- 选择门店 -->
	<JeepayPopupListSelect
	  ref="jeepayPopupListSelectByBizinfos"
	  :reqTableDataFunc="reqTableDataByBizsFunc"
	  :searchInputName="getSearchInputName()"
	  :fields="getField()"
	/>
	
</template>

<script setup>
import { reactive, ref } from 'vue'
import { reqLoad, API_URL_MCH_STORE_LIST, API_URL_MCH_APP_LIST } from '@/http/apiManager.js'
	
	
// 定义组件参数
const props = defineProps({

  // 是否多选框， 默认单选。
  isCheckbox: { type: Boolean, default: false },
  
  // 自动关闭， 点击确定， 自动关闭
  autoClose: { type: Boolean, default: true },
  
  // 业务类型： 默认门店
  bizType: { type: String, default: 'store' },
  
  // 是否支持选择 【 全部门店 、 全部应用 】
  isShowAllBiz: { type: Boolean, default: false },
  // 特殊参数处理
  params:{type:Object,default:()=>({})}
  
})
	
	
const jeepayPopupListSelectByBizinfos = ref()


function getField(){
	
	if(props.bizType == 'store'){
		return { key: 'storeId', left: 'storeName', right: 'storeId' }
	}
	
	if(props.bizType == 'mchApp'){
		return { key: 'appId', left: 'appName', right: 'appId' }
	}
}


function getSearchInputName(){
	if(props.bizType == 'store'){
		return "storeName"
	}
	
	if(props.bizType == 'mchApp'){
		return "appName"
	}
}


function reqTableDataByBizsFunc(params) {
	Object.assign(params,props.params)
	console.log(params);

	let apiResult = null;
	
	if(props.bizType == 'store'){
		apiResult = reqLoad.list(API_URL_MCH_STORE_LIST, params)
	}
	
	if(props.bizType == 'mchApp'){
		apiResult = reqLoad.list(API_URL_MCH_APP_LIST, params)
	}
	
	return apiResult.then((apiRes) => {
		return processApiResBizData(params, apiRes)
	})
  
}
	
// 选择门店
function open (defaultVal){
  return jeepayPopupListSelectByBizinfos.value.open(defaultVal).then((selected) => {
	  
	  // 自动关闭
	  if(props.autoClose){
		  close()
	  }
	  
	  return selected;
  })
}

function close(){
	jeepayPopupListSelectByBizinfos.value.close() //自行关闭
}


function processApiResBizData(params, apiRes){
	
	// 第一页 拼接全部门店 (index = 0 )
	if(params.pageNumber == 1 && props.isShowAllBiz){
		
		if(props.bizType == 'store'){
			apiRes.bizData.records.unshift({storeName: '全部门店', storeId: ''})
		}
		
		if(props.bizType == 'mchApp'){
			apiRes.bizData.records.unshift({appName: '全部应用', appId: ''})
		}
		
	}
	
	return apiRes
}


// 将表格事件暴露出去  https://www.jianshu.com/p/39d14c25c987
defineExpose({ open, close })
</script>

<style>
</style>